The DVD (digital versatile disk) format was designed by various members of the consumer electronics industry as a means of storing high quality audio-video content (e.g., a feature length film) on a single disk. To facilitate such efficient storage, the DVD format uses contemporary compression technologies to reduce the sizes of the video and audio bit streams comprising the content.
The DVD format employs the ISO MPEG-2 standard to compress video. MPEG-2 represents video content as a compressed series of frames. Each frame is a rectangular array of picture elements (pixels) depicting the content at a particular instant in time. Thus, playback consists of decompressing and then displaying this series of frames.
In conventional DVD players, the playback of DVD content is typically implemented in one of three ways: using dedicated hardware, using a software implementation, or using a combination of software and hardware. The most common or conventional implementation takes the form of a consumer electronics components with limited resources targeted exclusively at DVD playback. Less common or conventional implementations take the form of PC-based implementations or game consoles (e.g., Sony PLAYSTATION2, Microsoft X-BOX, etc.) which, because they target multiple functions, tend to have more extensive resources.
The MPEG-2 video standard employs three types of compressed frames: intra-frames (I-frames), predictive frames (P-frames), and bi-directionally predictive frames (B-frames). I-frames have no dependencies. Thus, an I-frame is self-contained and includes all information necessary to reproduce the associated original frame. P-frames may have forward dependencies, i.e., a P-frame is not self-contained. It may re-use information from the preceding decompressed reference frame (where a reference frame is either an I-frame or another P-frame). Thus, a playback implementation must decode reference frame preceding a P-frame before it decodes the P-frame itself and must keep the preceding reference frame resident in memory throughout the decoding of a P-frame. For the B-frames, B-frames are not self-contained and may have forward and backward dependencies, such that it may reuse information from either the preceding or the subsequent decompressed reference frame. Thus, a playback implementation must decode the reference frames both preceding and following a B-frame before it decodes the B-frame itself and must keep both the preceding and subsequent reference frames resident in memory throughout the decoding of a B-frame.
Normally, a playback implementation maintains four frame buffers (i.e., arrays of memory) of MPEG-2 video at any one time: 1) the currently decoded frame; 2) a forwards reference; 3) a backwards reference; and 4) the currently displayed frame. The forwards reference is the reference preceding the currently decoded frame, which is sometimes co-incident with the currently displayed frame. The backwards reference is the reference following the currently decoded frame. Additionally, the currently displayed frame is distinct from the currently decoded frame to prevent the player from updating a frame while it is being displayed, which causes an undesirable visual artifact called “tearing”.
Conventional DVD players have limited memory resources to reduce cost and enable forwards playback at normal speeds. However, the memory resources are insufficient for many fast-forwarding and rewinding operations. For example, conventional DVD players avoid decoding P or B frames when playing backwards, and instead only decode the self-contained I-frames. This leads to decoding less than 10% of the frames and providing jerky, low frame-rate play.